package com.zp.self.module.level_4_算法练习.数学.数学推理;
import org.junit.Test;

/**
 * @author By ZengPeng
 */
public class 力扣_836_矩形重叠 {
    @Test
    public void main() {
        
        Solution solution = new 力扣_836_矩形重叠().new Solution();
        System.out.println(solution);
    }

    /**
     题目：矩形以列表 [x1, y1, x2, y2] 的形式表示，其中 (x1, y1) 为左下角的坐标，(x2, y2) 是右上角的坐标。矩形的上下边平行于 x 轴，左右边平行于 y 轴。
         如果相交的面积为 正 ，则称两矩形重叠。需要明确的是，只在角或边接触的两个矩形不构成重叠。
         给出两个矩形 rec1 和 rec2 。如果它们重叠，返回 true；否则，返回 false 。

     示例 1：
     输入：rec1 = [0,0,2,2], rec2 = [1,1,3,3]
     输出：true

     示例 2：
     输入：rec1 = [0,0,1,1], rec2 = [1,0,2,1]
     输出：false

     示例 3：
     输入：rec1 = [0,0,1,1], rec2 = [2,2,3,3]
     输出：false

     分析：【P 💔】
        1.分析：第二个矩形的两个点  有一个在矩形1中
                --执行耗时:0 ms,击败了100.00% 的Java用户
                --编码时长:22:01
     
        官方： x 轴上的线段分别为 (rec1[0], rec1[2]) 和 (rec2[0], rec2[2])。
             根据数学知识，当 min(rec1[2], rec2[2]) > max(rec1[0], rec2[0]) 时，这两条线段有交集


     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
        //官方：当 min(rec1[2], rec2[2]) > max(rec1[0], rec2[0]) 时，这两条线段有交集
         return Math.min(rec1[2], rec2[2]) > Math.max(rec1[0], rec2[0]) && Math.min(rec1[3], rec2[3]) > Math.max(rec1[1], rec2[1]) ;


        //1.分析：第二个矩形的两个点  有一个在矩形1中
      /*  if((rec1[0]<rec2[0] && rec1[2]>rec2[0]) || (rec1[0]<rec2[2] && rec1[2]>rec2[2]) ||(rec2[0]<rec1[0] && rec2[2]>rec1[0]) || (rec2[0]<rec1[2] && rec2[2]>rec1[2]) ){
            if((rec1[1]<rec2[1] && rec1[3]>rec2[1]) || (rec1[1]<rec2[3] && rec1[3]>rec2[3]) ||(rec2[1]<rec1[1] && rec2[3]>rec1[1]) || (rec2[1]<rec1[3] && rec2[3]>rec1[3])  ){
                return true;
            }
        }
        return false;*/
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}